package com.robot.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.robot.dao.dto.CompanyInvitationDTO;
import com.robot.dao.dto.UserDTO;
import com.robot.dao.dto.UserLoginDTO;
import com.robot.dao.dto.UserUpdateDto;
import com.robot.dao.entity.User;
import com.robot.dao.vo.UserInfoVO;
import io.minio.errors.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.List;

public interface UserService extends IService<User> {



    /**
     * 根据用户ID获取用户信息
     * @param id
     * @return
     */
    UserInfoVO geUserById(Integer id);


    /**
     * 用户根据邀请码加入企业
     * @param companyInvitationDTO
     */
    void  addByInvitationCode(CompanyInvitationDTO companyInvitationDTO);


    /**
     * 修改用户信息
     * @param userUpdateDto
     */
    void modifyUser(UserUpdateDto userUpdateDto);

    /**
     * 上传用户头像
     * @param file
     * @return
     */
    String uploadUserImage(MultipartFile file) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException;

    /**
     * 用户设置为企业管理员
     * @param userDTO
     */
    void setCompanyManager(UserDTO userDTO);

    /**
     * 用户移除企业
     * @param userDTO
     */
    void removeCompany(UserDTO userDTO);


    /**
     * 用户注册
     * @param userLoginDTO
     * @return
     * @throws Exception
     */
    UserInfoVO register(UserLoginDTO userLoginDTO) throws Exception;


    List<Long> getManagerUserIDList();



    /**
     * 用户登录
     * @param userLoginDTO
     * @return
     * @throws Exception
     */
    UserInfoVO logOn(UserLoginDTO userLoginDTO) throws Exception;


    Boolean analyzeKey(String key) throws Exception;




}
